package com.tecnoin.tintconta.core.entities;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Partida 
{
	private long id = -1;
	
	private String comentario = null;
	
	private Ejercicio ejercicio = null;
	
	private double total = 0.00;
	
	private String fechaProceso = null;
	
	private String estado = null;
	
	private List<DetallePartida> detalle = null;
	
	private Map<Long, Clasificacion> clasificaciones = new HashMap<Long, Clasificacion>();
	
	/**
	 * @return the clasificaciones
	 */
	public Map<Long, Clasificacion> getClasificaciones() {
		return clasificaciones;
	}

	/**
	 * @param clasificaciones the clasificaciones to set
	 */
	public void setClasificaciones(Map<Long, Clasificacion> clasificaciones) {
		this.clasificaciones = clasificaciones;
	}

	public boolean montosExactos()
	{
		boolean retVal = false;
		double suma = 0.00;
		List<DetallePartida> detallePartida = getDetalle();
		if(detallePartida==null || detallePartida.isEmpty())
			return false;
		for(DetallePartida d : detallePartida)
		{
			boolean esCargo = d.getClass().isAssignableFrom(CargoPartida.class);
			suma += ( d.getMonto() * ( esCargo ? 1 : -1 )  );
		}
		return suma==total;
	}

	/**
	 * @return the detallePartida
	 */
	public List<DetallePartida> getDetalle() {
		return detalle;
	}

	/**
	 * @param detallePartida the detallePartida to set
	 */
	public void setDetalle(List<DetallePartida> detallePartida) {
		this.detalle = detallePartida;
	}

	/**
	 * @return the id
	 */
	public long getId() {
		return id;
	}

	/**
	 * @param id the id to set
	 */
	public void setId(long id) {
		this.id = id;
	}

	/**
	 * @return the comentario
	 */
	public String getComentario() {
		return comentario;
	}

	/**
	 * @param comentario the comentario to set
	 */
	public void setComentario(String comentario) {
		this.comentario = comentario;
	}

	/**
	 * @return the ejercicio
	 */
	public Ejercicio getEjercicio() {
		return ejercicio;
	}

	/**
	 * @param ejercicio the ejercicio to set
	 */
	public void setEjercicio(Ejercicio ejercicio) {
		this.ejercicio = ejercicio;
	}

	/**
	 * @return the total
	 */
	public double getTotal() {
		return total;
	}

	/**
	 * @param total the total to set
	 */
	public void setTotal(double total) {
		this.total = total;
	}

	/**
	 * @return the fechaProceso
	 */
	public String getFechaProceso() {
		return fechaProceso;
	}

	/**
	 * @param fechaProceso the fechaProceso to set
	 */
	public void setFechaProceso(String fechaProceso) {
		this.fechaProceso = fechaProceso;
	}

	/**
	 * @return the estado
	 */
	public String getEstado() {
		return estado;
	}

	/**
	 * @param estado the estado to set
	 */
	public void setEstado(String estado) {
		this.estado = estado;
	}
}
